//package com.nb.ds.plugin;
//
//import com.nb.ds.datasource.DsConstant;
//import com.nb.ds.datasource.DynamicDataSource;
//import org.apache.ibatis.executor.Executor;
//import org.apache.ibatis.mapping.MappedStatement;
//import org.apache.ibatis.mapping.SqlCommandType;
//import org.apache.ibatis.plugin.*;
//import org.apache.ibatis.session.ResultHandler;
//import org.apache.ibatis.session.RowBounds;
//
///**
// * @author lihaoyang6
// * @date 2024年04月22日 17:59
// */
//@Intercepts({@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class}),
//        @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})})
//public class DynamicDataSourcePlugin implements Interceptor {
//
//    @Override
//    public Object intercept(Invocation invocation) throws Throwable {
//        Object[] objects = invocation.getArgs();
//        MappedStatement ms = (MappedStatement) objects[0];
//        // 读方法
//        if (ms.getSqlCommandType().equals(SqlCommandType.SELECT)) {
//            DynamicDataSource.setDataSource(DsConstant.ds1);
//        } else {
//            // 写方法
//            DynamicDataSource.setDataSource(DsConstant.ds2);
//        }
//        // 修改当前线程要选择的数据源的k
//        return invocation.proceed();
//    }
//
//    @Override
//    public Object plugin(Object target) {
//        if (target instanceof Executor) {
//            return Plugin.wrap(target, this);
//        } else {
//            return target;
//        }
//    }
//
//
//
//}